package com.dcjk.service.impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.utils.StringUtils;
import com.github.pagehelper.PageHelper;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;
import com.dcjk.mapper.DcjkUsertMapper;
import com.dcjk.domain.DcjkUsert;
import com.dcjk.dto.DcjkUsertDto;
import com.dcjk.service.IDcjkUsertService;
import javax.annotation.Resource;
import java.util.List;

/**
 * 测试用户Service业务层处理
 *
 * @author dcjk
 * @date 2021-09-07
 */
@DS("master")
@DubboService
@Service("dcjkUsertService")
public class DcjkUsertServiceImpl extends ServiceImpl<DcjkUsertMapper, DcjkUsert> implements IDcjkUsertService {

    @Resource
    DcjkUsertMapper dcjkUsertMapper;

    @DS("slave")
    public List<DcjkUsert> list(DcjkUsertDto dcjkUsert) {
        Integer pageNum = dcjkUsert.getPageNum();
        Integer pageSize = dcjkUsert.getPageSize();
        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
        {
            PageHelper.startPage(pageNum, pageSize);
        }
        LambdaQueryWrapper<DcjkUsert> wrapper = getQueryWrapper(dcjkUsert);
        return this.getBaseMapper().selectList(wrapper);
    }

    private LambdaQueryWrapper<DcjkUsert> getQueryWrapper(DcjkUsertDto dcjkUsert) {
        LambdaQueryWrapper<DcjkUsert> wrapper = new LambdaQueryWrapper<>();
        if(StringUtils.isNotNull(dcjkUsert.getId())){
            wrapper.eq(DcjkUsert::getId,dcjkUsert.getId());
        }
        if(StringUtils.isNotNull(dcjkUsert.getUserId())){
            wrapper.eq(DcjkUsert::getUserId,dcjkUsert.getUserId());
        }
        if(StringUtils.isNotNull(dcjkUsert.getDeptId())){
            wrapper.eq(DcjkUsert::getDeptId,dcjkUsert.getDeptId());
        }
        if(StringUtils.isNotNull(dcjkUsert.getUserName())){
            wrapper.like(DcjkUsert::getUserName,dcjkUsert.getUserName());
        }
        if(StringUtils.isNotNull(dcjkUsert.getNickName())){
            wrapper.like(DcjkUsert::getNickName,dcjkUsert.getNickName());
        }
        if(StringUtils.isNotNull(dcjkUsert.getUserType())){
            wrapper.eq(DcjkUsert::getUserType,dcjkUsert.getUserType());
        }
        if(StringUtils.isNotNull(dcjkUsert.getEmail())){
            wrapper.eq(DcjkUsert::getEmail,dcjkUsert.getEmail());
        }
        if(StringUtils.isNotNull(dcjkUsert.getPhonenumber())){
            wrapper.eq(DcjkUsert::getPhonenumber,dcjkUsert.getPhonenumber());
        }
        if(StringUtils.isNotNull(dcjkUsert.getSex())){
            wrapper.eq(DcjkUsert::getSex,dcjkUsert.getSex());
        }
        if(StringUtils.isNotNull(dcjkUsert.getAvatar())){
            wrapper.eq(DcjkUsert::getAvatar,dcjkUsert.getAvatar());
        }
        if(StringUtils.isNotNull(dcjkUsert.getPassword())){
            wrapper.eq(DcjkUsert::getPassword,dcjkUsert.getPassword());
        }
        if(StringUtils.isNotNull(dcjkUsert.getStatus())){
            wrapper.eq(DcjkUsert::getStatus,dcjkUsert.getStatus());
        }
        if(StringUtils.isNotNull(dcjkUsert.getDelFlag())){
            wrapper.eq(DcjkUsert::getDelFlag,dcjkUsert.getDelFlag());
        }
        if(StringUtils.isNotNull(dcjkUsert.getLoginIp())){
            wrapper.eq(DcjkUsert::getLoginIp,dcjkUsert.getLoginIp());
        }
        if(StringUtils.isNotNull(dcjkUsert.getLoginDate())){
            wrapper.eq(DcjkUsert::getLoginDate,dcjkUsert.getLoginDate());
        }
        if(StringUtils.isNotNull(dcjkUsert.getCreateBy())){
            wrapper.eq(DcjkUsert::getCreateBy,dcjkUsert.getCreateBy());
        }
        if(StringUtils.isNotNull(dcjkUsert.getParams().get("beginCreateTime"))
                && StringUtils.isNotNull(dcjkUsert.getParams().get("endCreateTime"))) {
            wrapper.between(DcjkUsert::getCreateTime,dcjkUsert.getParams().get("beginCreateTime"),dcjkUsert.getParams().get("endCreateTime"));
        }
        if(StringUtils.isNotNull(dcjkUsert.getUpdateBy())){
            wrapper.eq(DcjkUsert::getUpdateBy,dcjkUsert.getUpdateBy());
        }
        if(StringUtils.isNotNull(dcjkUsert.getUpdateTime())){
            wrapper.eq(DcjkUsert::getUpdateTime,dcjkUsert.getUpdateTime());
        }
        if(StringUtils.isNotNull(dcjkUsert.getRemark())){
            wrapper.eq(DcjkUsert::getRemark,dcjkUsert.getRemark());
        }
        wrapper.orderByDesc(DcjkUsert::getCreateTime);
        return wrapper;
    }


}